<?php
/**
 * KindEditor PHP
 * 
 * 本PHP程序是演示程序，建议不要直接在实际项目中使用。
如果您确定直接使用本程序，使用之前请仔细确认相关安全设置。
 */

require_once 'JSON.php';

$php_path = dirname(__FILE__) . '/';
$php_url = dirname($_SERVER['PHP_SELF']) . '/';

// 文件保存目录路径
$save_path = $php_path . '../../../../../data/uploads/';
// 文件保存目录URL
$save_url = $php_url . '../../../../../data/uploads/';
// 定义允许上传的文件扩展名
$ext_arr = array(
    'image' => array( 'jpg', 'jpeg'),
     'flash' => array('swf', 'flv'),
     'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
     'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),
    );
// 最大文件大小
$max_size = 1000000;

$save_path = realpath($save_path) . '/';

// PHP上传失败
if (!empty($_FILES['imgFile']['error'])){
     switch($_FILES['imgFile']['error']){
     case '1':
         $error = '超过php.ini允许的大小。';
         break;
     case '2':
         $error = '超过表单允许的大小。';
         break;
     case '3':
         $error = '图片只有部分被上传。';
         break;
     case '4':
         $error = '请选择图片。';
         break;
     case '6':
         $error = '找不到临时目录。';
         break;
     case '7':
         $error = '写文件到硬盘出错。';
         break;
     case '8':
         $error = 'File upload stopped by extension。';
         break;
     case '999':
     default:
         $error = '未知错误。';
         }
     alert($error);
    }

// 有上传文件时
if (empty($_FILES) === false){
     // 原文件名
    $file_name = $_FILES['imgFile']['name'];
     // 服务器上临时文件名
    $tmp_name = $_FILES['imgFile']['tmp_name'];
     // 文件大小
    $file_size = $_FILES['imgFile']['size'];
     // 检查文件名
    if (!$file_name){
         alert("请选择文件。");
         }
     // 检查目录
//    if (@is_dir($save_path) === false){
//         alert("上传目录不存在。");
//         }
//     // 检查目录写权限
//    if (@is_writable($save_path) === false){
//         alert("上传目录没有写权限。");
//         }
     // 检查是否已上传
//    if (@is_uploaded_file($tmp_name) === false){
//         alert("上传失败。");
//         }
     // 检查文件大小
    if ($file_size > $max_size){
         alert("上传文件大小超过限制。");
         }
     // 检查目录名
    $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
//     if (empty($ext_arr[$dir_name])){
//         alert("目录名不正确。");
//     }
     // 获得文件扩展名
    $temp_arr = explode(".", $file_name);
     $file_ext = array_pop($temp_arr);
     $file_ext = trim($file_ext);
     $file_ext = strtolower($file_ext);
     // 检查扩展名
    if (in_array($file_ext, $ext_arr[$dir_name]) === false){
         alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。");
    }
    if(in_array($file_ext,$ext_arr['image'])){
        $file_url = uploadToServer(0, $tmp_name);
    }else if($file_ext == 'doc'){
        $file_url = uploadToServer(3, $tmp_name,$file_ext);
    }else if($file_ext == 'docx'){
        $file_url = uploadToServer(4, $tmp_name,$file_ext);
    }else if($file_ext == 'xls'){
        $file_url = uploadToServer(5, $tmp_name,$file_ext);
    }else if($file_ext == 'zip'){
        $file_url = uploadToServer(6, $tmp_name,$file_ext);
    }else if($file_ext == 'rar'){
        $file_url = uploadToServer(7, $tmp_name,$file_ext);
    }else if($file_ext == 'xlsx'){
        $file_url = uploadToServer(8, $tmp_name,$file_ext);
    }else{

    }
     if ($file_url == ''){
         alert("上传文件失败。");
     }
     header('Content-type: text/html; charset=UTF-8');
     $json = new Services_JSON();
     echo $json -> encode(array('error' => 0, 'url' => $file_url));
     exit;
    }

function alert($msg){
     header('Content-type: text/html; charset=UTF-8');
     $json = new Services_JSON();
     echo $json -> encode(array('error' => 1, 'message' => $msg));
     exit;
}

function uploadToServer($file_type=0,$tempFile = null,$file_ext = ''){
    if($tempFile){
        $param = array(
            'op_type'=>1002,
            'user_id'=>1,
            'app_key'=>'admin',
            'file_type'=>$file_type,
            'file_ext'=>$file_ext,
            'compress_type'=>1,//1不压缩/0压缩
            'file_length'=>filesize($tempFile),
            'task_id'=>'upload_image',
        );
        $param = "?json=".json_encode($param);
        $rst   = curlPost('http://file.51guipiao.com/index.php'.$param, file_get_contents($tempFile));
        $obj = json_decode($rst);
        if (is_object($obj)&&$obj->code==0) {
            return "http://file.51guipiao.com/2013/".$obj->attach_name;
        }else{
            return '';
        }
    }else{
        return '';
    }
}

function curlPost($server,$curlPost){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $server);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 80);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}